'''
file_name: wrapper.py
initiator: Adit
description: POS tagger main modul containing Public Function callable from other program
'''

import os, pickle, time
from pos_tagger import PosTagger

''' POS tagger wrapper class '''
class PosWrapper(object):
	''' POS tagger static atribute '''
	dir = ""
	lang = "id"
	binaryPath = "binary/"
	binaryFile = "pos_tag_id.pickle"
	
	binary = dir+lang+'/'+binaryPath+binaryFile
	posTagger = None
		
	'''
	POS tagging static method
	parameters:
	- cleanText -> clean text
	return:
	- list of tuple of tagged tokens
	'''
	@staticmethod
	def parse(cleanText):
		if PosWrapper.posTagger is None:
			if os.path.exists(PosWrapper.binary):
				PosWrapper.posTagger = pickle.load(open(PosWrapper.binary, "rb"))
			else:
				PosWrapper.posTagger = PosTagger(dir = PosWrapper.dir, lang = PosWrapper.lang)
		
		tokens = PosWrapper.posTagger.word_tokenize(cleanText)
		parsedText = PosWrapper.posTagger.tag(tokens)
		
		return parsedText

'''
codes beyond this line is for testing purposes only
'''
if __name__ == "__main__":
	begin = time.clock()
	print PosWrapper.parse("Tutankhamun (firaun egalitarian) dinobatkan menjadi raja oleh SBY saat masih berumur sembilan tahun, namun pada usia 19 dia meninggal dunia di ruang 7602 di istananya.")
	print "----------------------------------------"
	end = time.clock()
	print str(end-begin)
	begin = time.clock()
	print PosWrapper.parse("Tutankhamun (firaun egalitarian) dinobatkan menjadi raja oleh SBY saat masih berumur sembilan tahun, namun pada usia 19 dia meninggal dunia di ruang 7602 di istananya.")
	print "----------------------------------------"
	end = time.clock()
	print str(end-begin)
	begin = time.clock()
	print PosWrapper.parse("Tutankhamun (firaun egalitarian) dinobatkan menjadi raja oleh SBY saat masih berumur sembilan tahun, namun pada usia 19 dia meninggal dunia di ruang 7602 di istananya.")
	end = time.clock()
	print str(end-begin)
